package net.qiqb.core.optional.dao;

/**
 * 定义一些基本的PO数据库操作
 *
 * @param <PO>
 */
public interface BaseDao<PO> {



    /**
     * 根据id动态更新PO。如果新的PO和旧的PO一样，将不执行数据库操作
     * <p>
     * 根据默认的匹配规格找到PO中的id字段，如果没有，则抛异常， newPO 和 oldPO 的id 必须相同，否则报错
     * </p>
     *
     * @param newPO 待更新的新PO
     * @param oldPO 数据库里的旧PO
     * @return true：执行了sql ；false：两个数据相同，没执行执行数据库访问
     */
    boolean dynamicUpdatePOById(PO newPO, PO oldPO);
}
